package scau.cn;

import scau.cn.component.abstracts.Disk;
import scau.cn.component.domain.FileN;
import scau.cn.fat.FAT;

public class OpenedFileTableItem {
	/**
	 * 文件的路径
	 * 通过不断的找其parent节点来获取路径
	 */
	private String FilePath;
	
	/**
	 * 传入的文件属性
	 */
	private byte attribute;
	
	/**
	 * 传入的文件的起始盘块号
	 */
	private byte start;
	
	/**
	 * 传入的文件的长度
	 * 可由Disk封装的方法得到
	 */
	private int fileLength;
	
	/**
	 * 传入的文件的操作类型
	 * 可由attribute得到
	 * 经过判断，只读为0， 可读可写为1, 系统文件为2
	 */
	private byte opType;
	
	//----------------------------构造方法-----------------------------------
	public OpenedFileTableItem(Disk file) {
		this.attribute = file.getAttribute();
		this.fileLength = file.getLength();
		this.start = file.getStart(); 
		if((this.attribute & 0b00000101) == 4) {
			// 可读可写
			this.opType = 1;
		} else if((this.attribute & 0b00000101) == 1){
			// 只读
			this.opType = 0;
		} else {
			// 系统文件
			this.opType = 2;
		}
		String path = file.findPath();
		this.FilePath = path;
	}

	//---------------------------------修改器，访问器--------------------------
	public String getFilePath() {
		return FilePath;
	}

	public void setFilePath(String filePath) {
		FilePath = filePath;
	}

	public byte getAttribute() {
		return attribute;
	}

	public void setAttribute(byte attribute) {
		this.attribute = attribute;
	}

	public byte getStart() {
		return start;
	}

	public void setStart(byte start) {
		this.start = start;
	}

	public int getFileLength() {
		return fileLength;
	}

	public void setFileLength(int fileLength) {
		this.fileLength = fileLength;
	}

	public byte getOpType() {
		return opType;
	}

	public void setOpType(byte opType) {
		this.opType = opType;
	}
	
	//-------------------------方法-----------------------------------------
	@Override
	public String toString() {
		return "OpenedFileTableItem [FilePath=" + FilePath + ", attribute=" + attribute + ", start=" + start
				+ ", fileLength=" + fileLength + ", opType=" + opType + "]";
	}


}
